package LeetCode;

//给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点，返回 null 。
public class TesrInterview02_07 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode prevA = headA, prevB = headB;
        while (prevA != prevB) {
            //三目运算
            prevA = prevA == null ? headB : prevA.next;
            prevB = prevB == null ? headA : prevB.next;
            //因为两个链表加起来的长度是一样的所以，让两个头节点都走m+n步（m，n分别为两个链表长度）
            //当A走向空时让它从B开始走，反之走向下一个节点
//            if (prevA == null) {
//                prevA = headB;
//            } else {
//                prevA = prevA.next;
//            }
            //当B走向空时让它从A开始走，反之走向下一个节点
//            if (prevB == null) {
//                prevB = headA;
//            } else {
//                prevB = prevB.next;
//            }
        }
        // 1.相交时刚好返回交点
        // 2.不相交两个同时走到null
        //当两个节点相交时或者都为空时输出prevA或B，得到最后结果
        return prevA;
    }
}
